package ar.pegasus.clasificador.engine.business;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import org.jboss.seam.annotations.Name;

import ar.pegasus.clasificador.dao.api.local.AplicacionClasificadorDAOLocal;
import ar.pegasus.clasificador.entidades.aplicacion.AplicacionClasificador;
import ar.pegasus.clasificador.vo.AplicacionClasificadorVO;
import ar.pegasus.framework.componentes.PException;
import ar.pegasus.framework.dao.api.local.AplicacionDAOLocal;
import ar.pegasus.framework.entidades.core.Aplicacion;
import ar.pegasus.framework.entidades.core.Modulo;
import ar.pegasus.framework.entidades.core.Usuario;

/**
 * Clase encargada de operar con objetos <b>Aplicacion</b> ya sea para consultar
 * o grabar en la base de datos.
 * @author oarias
 */
@Stateless
@Name("aplicacionClasificador")
public class BossAplicacionClasificador implements BossAplicacionClasificadorLocal, BossAplicacionClasificadorRemote {
	@EJB
	private AplicacionClasificadorDAOLocal aplicacionClasificadorDAO;

	@EJB
	private AplicacionDAOLocal aplicacionDAO;

	/**
	 * @return Devuelve una lista con todos los aplicacaciones asociados a una organizacion.
	 * @throws PException 
	 */
	public List<AplicacionClasificador> getAplicacionList() throws PException {
		List<AplicacionClasificador> aplicaciones = aplicacionClasificadorDAO.getAll();
		for(AplicacionClasificador aplicacionVet : aplicaciones){
			Aplicacion aplicacion = aplicacionDAO.getDatosAplicacion(aplicacionVet.getIdAplicacion());     
			aplicacionVet.setAplicacion(aplicacion);
		}
		return aplicaciones;
	}

	/*
	 * Dado un id de aplicacion retorna una AplicacionSGP con los datos del Portal y de la BD de SGP 
	 */
	public AplicacionClasificadorVO getAplicacionVetVO(int idAplicacion) throws PException {
		AplicacionClasificador aplicacionVet = aplicacionClasificadorDAO.getById(idAplicacion) ;
		if(aplicacionVet.getModulos() == null)
			aplicacionVet.setModulos(new ArrayList<Modulo>());
		aplicacionVet.getModulos().size();
		return new AplicacionClasificadorVO (aplicacionVet) ;
	}

	public List<Usuario> getUsuariosPorAplicacion(int idAplicacion) throws PException {
		return aplicacionDAO.getUsuariosPorAplicacion(idAplicacion);
	}

	public AplicacionClasificador getAplicacionClasificador(int idAplicacion) {
		return aplicacionClasificadorDAO.getById(idAplicacion);
	}
}
